package io.servicios;

import io.Archivo;
import io.Carpeta;
import io.Cliente;
import io.ItemAgenda;
import io.ItemBusqueda;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;

/**
 *
 * @author Mariano Zapata
 */
public interface InterfazServiciosServidor extends Remote {
    
    public static final int AGREGAR_CLIENTE= 0;
    public static final int AGREGAR_CARPETA= 1;
    public static final int AGREGAR_ARCHIVO= 2;
    public static final int ORDENAR_CLIENTES= 3;
    public static final int ORDENAR_CARPETAS= 4;
    public static final int ORDENAR_ARCHIVOS= 5;
    
    public int conectar(String ip, int puertoRMICliente) throws RemoteException;
    public void desconectar(int id) throws RemoteException;
    public boolean estaVivo() throws RemoteException;
    public Carpeta expandirCarpeta(Carpeta padre) throws RemoteException;
    public Carpeta abrirExpediente(Carpeta aAbrir, int duenio) throws RemoteException;
    public void cerrarExpediente(Carpeta aCerrar) throws RemoteException;
    public Cliente abrirCliente(Cliente aAbrir, int duenio) throws RemoteException;
    public void cerrarCliente(Cliente aCerrar) throws RemoteException;
    public Object [] crearCliente(Cliente aCrear, Carpeta padre, int duenio) throws RemoteException;
    public Carpeta guardarCliente(Cliente aGuardar, int duenio) throws RemoteException;
    public boolean eliminarCliente(Cliente aEliminar, Carpeta padre, int eliminador) throws RemoteException;
    public Carpeta cortarCliente(Cliente aCortar, Carpeta padreNuevo, Carpeta padreViejo, int cortador)
            throws RemoteException;
    public Carpeta copiarCliente(Cliente aCopiar, Carpeta padreNuevo, int copiador) throws RemoteException;
    public Object [] crearCarpeta(Carpeta aCrear, Carpeta padre, int duenio) throws RemoteException;
    public Carpeta guardarCarpeta(Carpeta aGuardar, int duenio) throws RemoteException;
    public List<Cliente> eliminarCarpeta(Carpeta aEliminar, Carpeta padre, int eliminador) throws RemoteException;
    public Carpeta cortarCarpeta(Carpeta aCortar, Carpeta padreNuevo, Carpeta padreViejo, int cortador)
            throws RemoteException;
    public Carpeta copiarCarpeta(Carpeta aCopiar, Carpeta padreNuevo, int copiador) throws RemoteException;
    public String crearArchivoTemporal() throws RemoteException;
    public void escribirArchivoTemporal(String nombreArchivoTemp, byte [] bytes, int len) throws RemoteException;
    public Carpeta crearArchivo(Archivo aCrear, Carpeta padre, int quienCrea, String nombreArchivoTemp)
            throws RemoteException;
    public void abrirArchivo(Archivo aAbrir, int quienAbre) throws RemoteException;
    public Carpeta cambiarNombreArchivo(Archivo aCambiar, Carpeta padre, int quienCambia) throws RemoteException;
    public void cerrarArchivo(Archivo aCerrar, boolean guardar, String nombreArchivoTemp) throws RemoteException;
    public boolean eliminarArchivo(Archivo aEliminar, Carpeta padre, int quienElimina) throws RemoteException;
    public Carpeta cortarArchivo(Archivo aCortar, Carpeta padreNuevo, Carpeta padreViejo, int quienCorta)
            throws RemoteException;
    public Carpeta copiarArchivo(Archivo aCopiar, Carpeta padreNuevo, int quienCopia) throws RemoteException;
    public List<ItemAgenda> obtenerItemsAgenda(String fecha) throws RemoteException;
    public List<ItemAgenda> crearItemAgenda(ItemAgenda item, int duenio) throws RemoteException;
    public boolean eliminarItemAgenda(ItemAgenda item, int duenio) throws RemoteException;
    public List<ItemAgenda> modificarItemAgenda(ItemAgenda item, int duenio) throws RemoteException;
    public List<Integer> obtenerDiasConEventosImportantes(String fechaInicio, String fechaFin) throws RemoteException;
    public List<ItemBusqueda> buscarCarpeta(String palabraClave, boolean concordanciaInicio) throws RemoteException;
    public List<ItemBusqueda> buscarArchivo(String palabraClave, boolean concordanciaInicio) throws RemoteException;
    public List<ItemBusqueda> buscarClienteApellido(String palabraClave, boolean concordanciaInicio)
            throws RemoteException;
    public List<ItemBusqueda> buscarClienteNombre(String palabraClave, boolean concordanciaInicio) throws RemoteException;
    public List<ItemBusqueda> buscarClienteDni(String palabraClave) throws RemoteException;
    public List<ItemBusqueda> buscarExpedienteCaratula(String palabraClave, boolean concordanciaInicio)
            throws RemoteException;
    public List<ItemBusqueda> buscarExpedienteInstancia(String palabraClave, int nroInstancia, boolean concordanciaInicio)
            throws RemoteException;
    public List<ItemBusqueda> buscarExpedienteJuzgado(String palabraClave, boolean concordanciaInicio)
            throws RemoteException;
    public List<ItemBusqueda> buscarExpedienteSecretaria(String palabraClave, boolean concordanciaInicio)
            throws RemoteException;
    public List<ItemBusqueda> buscarExpedienteTipo(String palabraClave, boolean concordanciaInicio) throws RemoteException;
    public List<ItemBusqueda> buscarExpedienteEstado(byte estado) throws RemoteException;
}
